LINT
Section: User Commands (1)
Updated: March 17, 1986
Index
Return to Main Contents
NAME
lint - a C program verifier
SYNOPSIS
lint
[
-abchnpuvx
]
file ...
DESCRIPTION
Lint
attempts to detect features of the C program
files
which are
likely to be bugs, or non-portable, or wasteful.
It also checks the type usage of the program more strictly
than the compilers.
Among the things which are currently found are
unreachable statements,
loops not entered at the top,
automatic variables declared and not used,
and logical expressions whose value is constant.
Moreover, the usage of functions is checked to find
functions which return values in some places and not in others,
functions called with varying numbers of arguments,
and functions whose values are not used.
By default, it is assumed that all the
files
are to be loaded together; they are checked for
mutual compatibility.
Function definitions for certain libraries are available to
lint;
these libraries are referred to by a
conventional name,
such as `-lm', in the style of
ld(1).
Arguments ending in
.ln
are also treated as library files. To create lint libraries,
use the
-C
option:
-
lint -Cfoo files . . .
where
files
are the C sources of library
foo.
The result is a file
llib-lfoo.ln
in the correct library format suitable for linting programs
using
foo.
Any number of the options in the following list
may be used.
The
-D,
-U,
and
-I
options of
cc(1)
are also recognized as separate arguments.
- -a
-
Report assignments of long values to int variables.
- -b
-
Report
break
statements that cannot be reached.
(This is not the default because, unfortunately,
most
lex
and many
yacc
outputs produce dozens of such comments.)
- -c
-
Complain about casts which have questionable portability.
- -h
-
Apply a number of heuristic tests to attempt to
intuit bugs, improve style, and reduce waste.
- -mtarget
-
This switch is passed to the C preprocessor, and ensures that
machine-dependent include files for machine target are
used.
- -M
-
Do not complain about multiply-defined procedures. This switch
is useful, for example, when linting a library against its own lint library
generated with -C.
- -n
-
Do not check compatibility against the standard library.
- -p
-
Attempt to check portability to the
IBM
and
GCOS
dialects of C.
- -S
-
Apply stricter Sprite coding standards. With this option, ``++'' and
``--'' are disallowed as side effects inside other expressions,
assignment is not permitted inside if conditionals, and
the bodies of ifs and other compound statements must be
enclosed in braces.
- -u
-
Do not complain about functions and variables used and not
defined, or defined and not used (this is suitable for running
lint
on a subset of files out of a larger program).
- -v
-
Suppress complaints about unused arguments in functions.
- -x
-
Report variables referred to by extern declarations,
but never used.
- -z
-
Do not complain about structures that are never defined (e.g.
using a structure pointer without knowing its contents.).
Exit(2)
and other functions which do not return
are not understood; this causes various lies.
Certain conventional comments in the C source
will change the behavior of
lint:
- /*NOTREACHED*/
-
at appropriate points
stops comments about unreachable code.
- /*VARARGSn*/
-
suppresses
the usual checking for variable numbers of arguments
in the following function declaration.
The data types of the first
n
arguments are checked;
a missing
n
is taken to be 0.
- /*NOSTRICT*/
-
shuts off strict type checking in the next expression.
- /*ARGSUSED*/
-
turns on the
-v
option for the next function.
- /*LINTLIBRARY*/
-
at the beginning of a file shuts off complaints about
unused functions in this file.
AUTHOR
S.C. Johnson. Lint library construction implemented by Edward Wang.
FILES
/usr/lib/lint/lint[12] programs
/usr/lib/lint/llib-lc.ln declarations for standard functions
/usr/lib/lint/llib-lc human readable version of above
/usr/lib/lint/llib-port.ln declarations for portable functions
/usr/lib/lint/llib-port human readable . . .
llib-l*.ln library created with
-C
SEE ALSO
cc(1)
S. C. Johnson,
Lint, a C Program Checker
BUGS
There are some things you just
can't
get lint to shut up about.
/*NOSTRICT*/
is not implemented in the current version (alas).
Index
- NAME
-
- SYNOPSIS
-
- DESCRIPTION
-
- AUTHOR
-
- FILES
-
- SEE ALSO
-
- BUGS
-
This document was created by
man2html,
using the manual pages.
Time: 04:54:17 GMT, January 31, 2023